#pragma once
#include <stdio.h>
#include <assert.h>
#include <stdbool.h>
#include <stdlib.h>

typedef int SListDataType;
typedef struct SListNode
{
	SListDataType _data;
	struct SListNode* _next;
}SListNode;

void SListPrint(SListNode* ps);
SListNode* BuyListNode(SListDataType data);

void SListPushBack(SListNode** ps, SListDataType data);
void SListPushFront(SListNode** ps, SListDataType data);

void SListPopBack(SListNode** ps);
void SListPopFront(SListNode** ps);

SListNode* SListFind(SListNode* ps, SListDataType data);

void SListInsert(SListNode** ps, SListNode* pos, SListDataType data);
void SListErase(SListNode** ps, SListNode* pos);

void SListInsertAfter(SListNode* pos, SListDataType data);
void SListEraseAfter(SListNode* pos);